package listados;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.swing.BorderFactory;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

import org.apache.commons.collections.functors.WhileClosure;

import paneles.MonedaRender;

import datos.Producto;
import datos.ProfesionalRealizaServicio;

import accesoADatos.AccesoADatos;


public class ListadoProductos extends ListadoDialog {

	private static final long serialVersionUID = -5428111958933986576L;
	private JLabel lProveedor;
	private JComboBox cbProveedor;

	public ListadoProductos(JFrame frame, Vector v) {
		super(frame, v);
		lProveedor = new JLabel();
		super.jPanel1.add(lProveedor);
		lProveedor.setText("Proveedor");
		lProveedor.setHorizontalAlignment(SwingConstants.CENTER);
		lProveedor.setPreferredSize(new java.awt.Dimension(100,21));
		lProveedor.setBorder(BorderFactory.createLineBorder(new Color(0,0,0)));
		lProveedor.setForeground(new Color(0,0,0));
		lProveedor.setSize(100, 21);	
		List ls = AccesoADatos.getInstance().getProveedores();
		ls.add(0, new String("Todos"));
		ComboBoxModel cbServicioModel = 
			new DefaultComboBoxModel(
					ls.toArray());
		cbProveedor = new JComboBox();
		super.jPanel1.add(cbProveedor);
		cbProveedor.setModel(cbServicioModel);
		cbProveedor.setBorder(BorderFactory.createLineBorder(new Color(0,0,0)));
		cbProveedor.setPreferredSize(new java.awt.Dimension(130, 21));
		this.setTitle("Listado de Productos");
		this.paneListados1.getJTable1().getColumnModel().getColumn(3).setCellRenderer(new MonedaRender());
		this.paneListados1.getJTable1().getColumnModel().getColumn(2).setMinWidth(100);
		this.paneListados1.getJTable1().getColumnModel().getColumn(5).setMinWidth(80);
		this.paneListados1.getJTable1().getColumnModel().getColumn(4).setCellRenderer(new MonedaRender());
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}

	@SuppressWarnings("unchecked")
	public Vector cargarVector(Object object) {
		Producto p=(Producto) object;
		Vector v=new Vector();
		v.add(p.getNombre());
		v.add(p.getMarca());
		v.add(p.getDescripcion());
		v.add(p.getPrecioCosto());
		v.add(p.getPrecioVenta());
		if(p.getProveedor() != null)
			v.add(AccesoADatos.getInstance().getProveedor(p.getIdProducto()));
		else
			v.add(new String());
		v.add(p.getCantidaMinima());
		v.add(p.getCantidad());
		return v;
	}

	@SuppressWarnings("unchecked")
	public List getLista() {
		List l=AccesoADatos.getInstance().getProductos();
		List result = new ArrayList();
		Criterio c = getCriterio();
		for (int i=0; i<l.size();i++){
			Producto r=(Producto)l.get(i);
			if (c.eval(r))
				result.add(r);
		}
		AccesoADatos.getInstance().getSession().close();
		return result;
	
	}

	private Criterio getCriterio() {
		String nombre=this.cbProveedor.getSelectedItem().toString();
		Criterio c=new CriterioProveedorNombre(nombre);
		return c;
	}


}
